A. Field of the Invention
The present invention is directed to program controlled manipulators or "robots", and more particularly to an improvement in the program controlled manipulator described in U.S. Pat. No. 4,506,335 entitled "Manipulator With Controlled Path Motion" filed Mar. 19, 1985 in the name of T. J. Magnuson, the disclosure of which is incorporated herein by reference. It will be understood, however, that although the present invention has been described and illustrated in connection with the type of manipulator and control described in U.S. Pat. No. 4,506,335, the detailed description which follows also has application to other types of program controlled manipulator control systems.
B. Description of the Related Art
In the type of manipulator control with which the present invention is concerned, the path of motion of the manipulator arm associated with the manipulator is defined by establishing a number of intermediate points along the path of motion. Generally, the distances between adjacent points, sometimes referred to as "spans", define linear paths of travel, over which the acceleration, deceleration and velocity of the manipulator arm can be controlled in accordance with parameters established by the operator and a suitable manipulator control program.
For example, it is often preferable to define or program the intermediate points in space with respect to a rectangular coordinate system. This type of control requires that the coordinates of the intermediate programmed points be transformed to coordinates of the manipulator arm axes in order to produce coordinate motion to follow the predetermined path. A method and apparatus for accomplishing this type of controlled path motion is described in U.S. Pat. No. 3,909,600.
Upon ariving at a predetermined point along the path of travel of the manipulator arm, it is often desirable for the robot to perform or execute a particular function. For example, the manipulator arm may be provided with a welding gun which carries out a welding operation on a workpiece at one or more particular programmed points. In the implementation described in U.S. Pat. No. 4,506,335, the particular programmed function is performed when the manipulator arm reaches the end point of a particular span. No provision is made for the control to execute the programmed function (e.g. a weld cycle consisting of a weld gun closure and spot weld operation) between programmed points.
However, it is often desirable to separate function execution from physically ariving at a programmed point. That is, in many applications it is desirable to perform functions or operations at locations along the predetermined path of travel of the manipulator arm between programmed points. For example, in the case where a weld gun is used to perform a welding operation on a workpiece, it may be desirable to start closing the gun before the arm motion is completed in order to effectively reduce the overall cycle time of the operation. This type of simultaneous operation allows the gun closure and arm motion to be completed in unison regardless of the velocity during the move.
Generally, this has been accomplished in one of two ways. First, the user could manually program or schedule a number of intermediate data points at different distances from the desired end point based upon the programmed velocity, taking into account whether the manipulator arm was accelerating, decelerating or moving at constant speed. In other words, the user had to individually program each point along the pedetermined path of travel at which a particular desired operation was to occur. This method was time consuming to program and used valuable memory space for the extra data points within the programmable control. Moreover, each time the operator wanted to change the position of the function or task initiation, he had to first erase the old task position data point and then program a new one. Thus, while multiple functions or tasks could be performed between programmed points along the path of manipulator arm travel, each of the separate points had to be separately defined, stored and executed.
Another approach permits the performance of a single function to be initiated between programmed points by specifying a fixed time or distance relative to the end point in a particular span of motion. For example, if a welding operation is to be performed at the end point, the user can program the manipulator control so as to initiate closing the weld gun a predetermined time t before arriving at the end point during a particular span of motion. Thus, the overall cycle time of the welding operation is reduced since gun closure and arm motion are occurring simultaneously. This operation is illustrated diagrammatically in FIG. 4A where four designated programmed points A-D have been established along the path of travel of the manipulator arm, and are designed by the symbol .+-.. In this example, it is desired to perform a particular function execution, (e.g. a spot weld gun closure operation) designated by the symbol *, a fixed time t before arriving at each of programmed points B-D. As explained in U.S. Pat. No. 4,506,335, for example, an output may be produced from an I/O device such as a DAC (digital-to-analogue converter) to initiate a particular programmed function, e.g., a weld gun closure.
Similarly, FIG. 4B illustrates diagrammatically an exemplary application where a particular function designated by the symbol * (such as closure of a weld gun) is to be performed a fixed predetermined distance d before programmed points B-D.
One of the drawbacks to these approaches, based on fixed time and distances, however, is that only a single function can be specified between end points. In addition, the particular intermediate function or task, (e.g., closure of the weld gun) is initiated only on the basis of a single fixed time or distance relative to a programmed point along the path of manipulator arm travel irrespective of the velocity of the manipulator arm. For example, in cases where the trigger point is established on the basis of a fixed distance alone, unless the velocity, acceleration and deceleration of the manipulator arm during the particular span of motion are carefully taken into consideration in establishing the distance relative to the end point at which the function is to commence, the function may not be entirely completed before the end point is reached. Thus, in the case of a welding cycle, if the distance d from the end point at which the gun commences closure is not carefully chosen in view of the particular velocity, deceleration and acceleration of the manipulator arm in that area of travel, the weld gun may not be completely closed when the actual weld operation should commence. Again, this requires substantial user intervention with the program involving detailed calculations, and reduces the effectiveness and efficiency of the control. Moreover, this mode of operation cannot be used to perform the same task or different tasks multiple times between programmed points. This also illustrates the difficulty of using a trigger based on a fixed distance when trying to coordinate a time-oriented function.
In a first embodiment of the present invention, the control system is provided with a "Multiple Trigger" mode of operation which allows one or more functions specified by the user at the programmed end point to be performed at user-selected distance intervals between programmed points while the manipulator arm is in motion.
An example of this mode of operation is illustrated diagrammatically in FIG. 4C, where programmed points A-D along the manipulator arm path of travel are represented by the symbol .+-. and function executions to be performed intermediate those points (such as a weld gun closure or an entire weld operation) are represented by the symbol *. In the particular example shown, points B and C have been programmed with a Multiple Trigger so as to initiate a weld gun closure * every three inches, commencing from programmed point A. It will be understood that function executions * cease once a point at which a nonmultiple or nonsynchronized trigger is programmed is reached, e.g., points B and C. However, since point C has also been programmed with a Multiple Trigger, function executions continue at the selected spacing of 3" until the next end point C. It will also be observed that in this mode of operation, the multiple function executions cease when an end point is reached (e.g., point D) not programmed with a Multiple or a synchronous Trigger. Consequently, the Multiple Trigger mode allows the user to completely define a multiplicity of function executions during a span between programmed points during motion of the manipulator arm by merely specifying the desired intermediate function execution interval.
FIG. 4D illustrates diagrammatically the use of the Multiple Trigger mode to perform multiple functions at different user-selected distance intervals. Here, programmed point B has been programmed with a Multiple Trigger having a selected distance interval of 3", point C has been programmed with a Multiple Trigger having a selected distance interval of 5", and point D has been programmed with a Multiple Trigger having a selected distance interval of 7". In this case, within the span between programmed points A and B, the function execution * will be performed every 3 inches. At point B the 3" interval Multiple Trigger is turned off, and the 5" interval Multiple Trigger is turned on. Thus, between programmed points B and C, the distance interval between functions * will be 5 inches. Similarly, between programmed points C and D, the distance between function executions * will be 7 inches. In general, a function can be specified to execute on point or between points, but not both. However, by properly specifying the distance intervals between intermediate points, the last function execution may be caused to coincide with a programmed point.
As will become apparent from the detailed description which follows, this mode of operation is very useful where there is a group or sequence of functions to be executed while the arm is moving. For example, in a welding cycle, multiple welding operations can be made to occur between programmed points (e.g., A-D in examples hereinabove), thus conserving cycle time. Moreover, a different task can be performed at each intermediate point, e.g., a first task at a first point, a second task at a second point, etc., until all programmed tasks have been completed. Thereafter, the sequence may be completed commencing with the next intermediate point.
A second embodiment of the present invention comprises a more particularized implementation of the Multiple Trigger mode of operation and will be referred to hereinafter as "synchronous Trigger". The operation of the Synchronous Trigger is the same as the operation of the Multiple Trigger, except that the Synchronous Trigger mode does not effect what occurs at a programmed point. For example, FIG. 4E illustrates an exemplary situation where points B and C have been programmed with Synchronous Trigger with a 3" designated spacing. It will be observed that in this mode of operation, the Synchronous Trigger is not turned off and reinitiated at each intervening programmed point. Rather, as exemplified by point B, the Synchronous Trigger utilizes the last occurring Synchronous Trigger execution as the reference point so that the distance between intermediate points is constant, irrespective of intervening programmed points. The Synchronous Triggers continue to be produced until a programmed point is reached which is not programmed with a Synchronous Trigger, e.g. point D in FIG. 4E. At this position, the Synchronous Triggers are terminated.
FIG. 4F illustrates a situation using the Synchronous Trigger where it is desired to change to different distance intervals between adjacent programmed points, in a manner similar to that described hereinabove in connection with the Multiple Trigger example of FIG. 4D. Thus, as illustrated in FIG. 4F, point B has been programmed with a Synchronous Trigger having a 3" distance interval, while point C has been programmed with a Synchronous Trigger having a 5" distance interval. It can be seen that the Synchronous Trigger executions bridging programmed point B exhibit a 5" distance interval inasmuch as the execution point immediately preceding programmed point B is used as the reference. Similarly, for the change from a 5" to 7" distance interval, the Synchronous Trigger execution immediately preceding programmed point C is used as the reference. As in the case of Multiple Trigger, the Synchronous Triggers are performed until a programmed point is reached that does not have an associated Synchronous Trigger.
In the preferred embodiment of Synchronous Trigger to be described, the Synchronous Triggers are used to produce sync pulses which are unrelated to any function execution at programmed distances via a DAC output. These sync pulses may then be used for controlling a manipulator arm mounted ultrasonic inspection transducer for checking the integrity of spot welds produced by a weld gun also carried by the manipulator arm. Consequently, the Synchronous Trigger operates as a background function to other functions being performed on point by the control system, which are not affected.
In the type of computer-based control system used in the present invention, a Multiple or Synchronous Trigger can only be produced as often as the system requests information from the servos, i.e. the system update or interrupt interval, which may be on the order of 10-20 milliseconds. This may cause errors in the position at which a Multiple or Synchronous Trigger actually occurs if the manipulator arm is accelerating, decelerating or moving at higher velocities. For example, if the manipulator arm is programmed to move at a velocity of 25 in/sec, and the system interrupt time is 15 milliseconds, a trigger can only be produced every 15 milliseconds corresponding to a manipulator arm travel distance of 0.375 inches. Consequently, for this example, the minimum trigger resolution is 0.375 inches.
In this type of situation, the precision of the Synchronous or Multiple Trigger function can be improved by adjusting the velocity of the manipulator arm downwardly at the beginning of its movement so that the distance interval between system interrupts (sometimes referred to as the "subspan" or "minispan" distance) is an exact submultiple of the Trigger distance. For instance, in the example just given, if the multipulator arm velocity is reduced to 6.67 in/sec, the Multiple Triggers will occur at intervals of 0.1 inches, corresponding to an elapsed time of 15 milliseconds, which is the system interrupt time. Thus any desired Multiple or Synchronous Trigger interval can be specified by appropriately adjusting the manipulator arm velocity during a particular minispan. This mode of operation ("Exact Mode"), will be described in more detail hereinafter in connection with the use of the type of manipulator arm control described and illustrated in U.S. Pat. No. 4,506,335.